Ventura County Environmental Justice Screen

Author

Joaquin Sandoval

Load Packages

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.2     ✔ tibble    3.3.0
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.1.0     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(sf)
Linking to GEOS 3.13.0, GDAL 3.8.5, PROJ 9.5.1; sf_use_s2() is TRUE
library(here)
here() starts at /Users/joaquinsandoval/Documents/MEDS/EDS-223/Homework/eds-223-homework1
library(tmap)

Import Data

# Read in geodatabase of EJScreen data at the Census Block Group level

ejscreen <- sf::st_read(here::here("data", "ejscreen","EJSCREEN_2023_BG_StatePct_with_AS_CNMI_GU_VI.gdb")) 
Reading layer `EJSCREEN_StatePctiles_with_AS_CNMI_GU_VI' from data source 
  `/Users/joaquinsandoval/Documents/MEDS/EDS-223/Homework/eds-223-homework1/data/ejscreen/EJSCREEN_2023_BG_StatePct_with_AS_CNMI_GU_VI.gdb' 
  using driver `OpenFileGDB'
Simple feature collection with 243021 features and 223 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -19951910 ymin: -1617130 xmax: 16259830 ymax: 11554350
Projected CRS: WGS 84 / Pseudo-Mercator
# Filter to state of California
california <- ejscreen |> 
  dplyr::filter(ST_ABBREV == "CA") 

# Filter to Ventura County
ventura <- ejscreen |> 
  dplyr::filter(CNTY_NAME %in% c("Ventura County"))

# Read in city boundary data with city names for Ventura County

city_boundary <- sf:: st_read(here::here("data", "City_Boundary", "City_Boundary.shp"))
Reading layer `City_Boundary' from data source 
  `/Users/joaquinsandoval/Documents/MEDS/EDS-223/Homework/eds-223-homework1/data/City_Boundary/City_Boundary.shp' 
  using driver `ESRI Shapefile'
Simple feature collection with 10 features and 11 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: 6162344 ymin: 1867837 xmax: 6370545 ymax: 1996012
Projected CRS: NAD83 / California zone 5 (ftUS)

Visualize Data

# Switch mode to t_map viewing mode to interactive 

tmap_mode("view")
ℹ tmap modes "plot" - "view"
ℹ toggle with `tmap::ttm()`
# Map 1

# Plot using Ventura County boundaries using ventura data and tm_polygons() filled with Percent Low Income variable

tm_shape(ventura) +
  tm_polygons(fill = "P_LOWINCPCT",
          
          # Incorporating color scale  
          
              fill.scale = tm_scale(values = "YlOrBr"), 
          
          # Adjust legend title
          
              fill.legend = tm_legend(title = "Percent Low Income")) +  
  
  #Plotting only the city names from the city_boundary data and adjusting text size 

tm_shape(city_boundary) +  
  tm_text("city_name", size = 1.5) + 
  
  # Adding map title, scalebar, compass, and minimap 
  
tm_layout(title = "Ventura County Low Income") + 
tm_scalebar() + 
  
  # Compass position to lower left 
  
tm_compass(position = c("left", "bottom")) + 
tm_minimap()
[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`
[cols4all] color palettes: use palettes from the R package cols4all. Run
`cols4all::c4a_gui()` to explore them. The old palette name "YlOrBr" is named
"brewer.yl_or_br"
Multiple palettes called "yl_or_br" found: "brewer.yl_or_br", "tol.yl_or_br", "matplotlib.yl_or_br". The first one, "brewer.yl_or_br", is returned.
# Map 2 

# Plot using Ventura County boundaries using ventura data and tm_polygons() filled with Air Toxics Cancer Risk 

  tm_shape(ventura) +
  tm_polygons(fill = "CANCER",
              
               # Incorporating the same color scale  
              
              fill.scale = tm_scale(values = "YlOrBr"),
              
              # Updating the legend title 
              
              fill.legend = tm_legend(title = "Air Toxics Cancer Risk")) + 
  
  # Again, plotting only the city names from the city_boundary data and adjusting text size 

tm_shape(city_boundary) + 
  tm_text("city_name", size = 1.5) + 
  

   # Adding map title, scalebar, compass, and minimap

tm_layout(title = "Ventura County Air Toxics Cancer Risk (persons per million) ") + 
tm_scalebar() + 
  
  # Dropping compass position to lower left 
  
tm_compass(position = c("left", "bottom")) + 
tm_minimap() 
[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`
[cols4all] color palettes: use palettes from the R package cols4all. Run
`cols4all::c4a_gui()` to explore them. The old palette name "YlOrBr" is named
"brewer.yl_or_br"
Multiple palettes called "yl_or_br" found: "brewer.yl_or_br", "tol.yl_or_br", "matplotlib.yl_or_br". The first one, "brewer.yl_or_br", is returned.

Map Interpretations

Below are two different maps conveying information about Ventura County which is located in Southern California between Santa Barbara County to the north and Los Angeles County in the south. Much like its northern and southern neighbors, Ventura County houses a diverse population of people and wealth disparities are very evident across city lines and within cities themselves. In the first map below, I chose to plot the Percent Low Income variable. Low income is defined as less than or equal to twice the poverty level which is a national number and the same across geographic regions. It is clear that many areas of Ventura County have a large percent of low income individuals (80-100%), particularly south of San Buenaventura and in large areas of Oxnard. I was interested if there was overlap of Air Toxic Cancer Risk (Lifetime cancer risk from inhalation of air toxics per million people) because of the presence of many agricultural fields along the 101 freeway in Oxnard and Camarillo which has adjacent low-income areas. The second map displays that across Ventura County, the Air Toxics Cancer Risk is about 20-29 ppm. In areas of Camarillo and Oxnard, that value is higher at 30-39 ppm, and some areas within Oxnard have significantly higher values of 40-60 ppm. It is clear that in these low-income areas, the risk for developing cancer due to inhalation of air toxics is higher than in higher income areas.

Data Citations

Data from the United States Environmental Protection Agency’s previous EJ Screen: Environmental Justice Screening Tool

https://drive.google.com/file/d/1nG6Nj1bXfzQFOVMO8Km3eNy4SWu1YcIQ/view

Ventura County GIS Data

https://venturacountydatadownloads-vcitsgis.hub.arcgis.com/datasets/city-boundary/explore